package com.sanploy.manage.service;

import com.sanploy.common.domain.AttrClass;
import com.sanploy.common.domain.GoodsAttr;
import com.sanploy.common.domain.vo.GoodsAttrClassVo;
import com.sanploy.common.vo.BaseException;

import javax.servlet.ServletRequest;
import java.util.List;

/**
 * Created by yingzhi zhu on 2017/9/17.
 * @author yingzhi zhu
 * 商品规格 逻辑处理接口
 */
public interface GoodsAttrService {

     /**
      * 插入商品参数
      * @param goodsAttrsJson json数据
      * @param goodsId 商品Id
      * @return 数据库影响行数
      */
     int insertGoodsAttr(String goodsAttrsJson, Long goodsId);

     /**
      * 更新商品规格
      * @param goodsAttrsJson 商品规格json数据
      * @param goodsId 商品id
      * @return 数据库影响行数
      */
     int updateGoodsAttr(String goodsAttrsJson, Long goodsId);

     /**
      * 更新商品规格
      * @param id 规格id
      * @param goodsAttr 商品规格实体类
      * @param servletRequest
      * @return 数据库影响行数
      * @throws BaseException 自定义异常
      */
     int updateGoodsAttr(Long id, GoodsAttr goodsAttr, ServletRequest servletRequest) throws BaseException;

     /**
      * 通过商品id查找商品规格
      * @param goodsId 商品id
      * @return 商品规格实体集合
      */
     List<GoodsAttrClassVo> findGoodsAttrByGoodsId(Long goodsId);

     /**
      * 通过id数组查找的对应商品规格
      * @param itemAttrId 商品规格参数id数组
      * @return 商品规格实体集合
      */
     List<GoodsAttr> findAttrArr(String[] itemAttrId);

     /**
      * 通过id查找商品规格实体
      * @param id 商品规格id
      * @return 商品规格
      */
     GoodsAttr findOneAttr(Long id);

     /**
      * 插入商品规格的分类 如颜色分类，商品规格
      * @param name 商品规格名
      * @param sort 排序
      * @return 影响行数
      * @throws BaseException 自定义异常
      */
     int insertGoodsAttrClass(String name, int sort) throws BaseException;

     /**
      * 查找所有商品规格的分类
      * @return 商品规格实体 集合
      */
     List<AttrClass> findAllAttrClass();

     /**
      * 通过id查找商品规格的分类实体
      * @param id 商品规格的分类id
      * @return 商品规格的分类实体
      */
     AttrClass findOneClass(Long id);

     /**
      * 通过id修改商品规格的分类的名字
      * @param name 新的商品规格的分类名
      * @param sortOrder 排序号
      * @param id 商品规格的分类id
      * @return 数据库影响行数
      * @throws BaseException 自定义异常
      */
     int updateAttrClassName(String name, int sortOrder, Long id) throws BaseException;
}
